import request from '@/config/axios'
import { InterviewSlotVO } from '@/api/recruit/interviewslot'

// 面试 VO
export interface InterviewVO {
  id: string // 主键
  batchId: string // 计划ID
  interviewDate: Date // 面试日期
  studentLimit: number // 限制总人数
  studentLimitAm: number // 上午限制人数
  studentLimitPm: number // 下午限制人数
  interviewDuration: number // 面试时长
  interviewGap: number // 面试休息间隔
  interviewStartTime: string // 面试开始时间
  interviewEndTime: string // 面试结束时间
  launchStartTime: string // 午休开始时间
  launchEndTime: string // 午休结束时间
  amBreakStartTime: string // 上午休息开始时间
  amBreakEndTime: string // 上午休息结束时间
  pmBreakStartTime: string // 下午休息开始时间
  pmBreakEndTime: string // 下午休息结束时间
  status: string // 状态
  interviewTimes: string // 面试时间段
  groups: number // 分组
  remark: string // 备注

  unassignedCount?: number // 未分配面试学生数
  studentCount?: number // 面试学生数
}

export interface InterviewWithSlotSaveReqVO extends Partial<InterviewVO> {
  slots: Partial<InterviewSlotVO>[]
}

export interface InterviewSpecialistInfoRespVO {
  id: string // 主键
  batchId: string // 计划ID
  interviewDate: Date // 面试日期
  studentLimit: number // 限制总人数
  studentLimitAm: number // 上午限制人数
  studentLimitPm: number // 下午限制人数
  interviewDuration: number // 面试时长
  interviewGap: number // 面试休息间隔
  interviewStartTime: string // 面试开始时间
  interviewEndTime: string // 面试结束时间
  launchStartTime: string // 午休开始时间
  launchEndTime: string // 午休结束时间
  amBreakStartTime: string // 上午休息开始时间
  amBreakEndTime: string // 上午休息结束时间
  pmBreakStartTime: string // 下午休息开始时间
  pmBreakEndTime: string // 下午休息结束时间
  status: string // 状态
  interviewTimes: string // 面试时间段
  groups: number // 分组
  remark: string // 备注
  createTime: Date // 创建时间
  groupName: string // 面试分组
  interviewAmount: number // 面试人数
  unscoredAmount: number // 未评分人数
  scoredAmount: number // 已评分人数
  confirmScoredAmount: number // 已取得成绩人数
  meetingsNumber: string // 腾讯会议号
  qqGroupNumber: string // 面试群号
  specialistName1: string // 评委1
  specialistName2: string // 评委2
  specialistName3: string // 评委3
}

// 面试 API
export const InterviewApi = {
  // 查询面试分页
  getInterviewPage: async (params: any) => {
    return await request.get({ url: `/recruit/interview/page`, params })
  },

  // 查询面试详情
  getInterview: async (id: string) => {
    return await request.get({ url: `/recruit/interview/get?id=` + id })
  },

  // 新增面试
  createInterview: async (data: InterviewVO) => {
    return await request.post({ url: `/recruit/interview/create`, data })
  },

  // 修改面试
  updateInterview: async (data: InterviewVO) => {
    return await request.put({ url: `/recruit/interview/update`, data })
  },

  // 删除面试
  deleteInterview: async (id: string) => {
    return await request.delete({ url: `/recruit/interview/delete?id=` + id })
  },

  // 导出面试 Excel
  exportInterview: async (params) => {
    return await request.download({ url: `/recruit/interview/export-excel`, params })
  },

  // 新增面试+槽位
  createInterviewWithSlot: async (data: InterviewWithSlotSaveReqVO) => {
    return await request.post({ url: `/recruit/interview/create-slot`, data })
  },

  // 专家获取指定面试分组的面试详情
  interviewSpecialistDetail: async (groupId: string) => {
    return await request.get({ url: `/recruit/interview/specialist-info?groupId=` + groupId })
  }
}
